package au.com.bus4u.service;

import au.com.bus4u.utils.PageData;

import java.io.Serializable;
import java.util.List;

public interface PermissionService {

    /**
     * 新增
     */
    public int save(PageData pd)throws Exception;


    /**
     * 删除
     */
    public int delete(Integer id)throws Exception;

    /**
     * 修改
     */
    public int edit(PageData pd)throws Exception;


    /**
     * 列表
     */
    public List<PageData> list(PageData pd)throws Exception;





    /**
     * 批量删除
     */
    public int deleteAll(String[] DATA_IDS)throws Exception;


    /**
     * 通过id获取数据
     */
    public PageData findById(Integer id)throws Exception;

    /**
     *  通过父id获取数据
     */
    public List<PageData> findByPId(Integer menu_pid)throws Exception;

    /**
     * 通过角色id和父级菜单id 获取该角色用户可查看的导航菜单数据
     */
    public List<PageData> findByRoleIdAndMenuPId(Integer role_id, Integer menu_pid)throws Exception;

    /**
     * 获取菜单tree数据
     * @return
     * @throws Exception
     */
    public List<PageData> loadPermissionTree(Integer menu_pid)throws Exception;

    public List<PageData> loadAllPermission(PageData pageData)throws Exception;

    //查询最大排序号
    public Integer queryMaxSortNum() throws Exception;

    /**
     * 查询所有可用的菜单和权限
     * @return
     */
    List<PageData> loadAllMenuAndPermission() throws Exception ;


    /**
     *
     * 根据角色ID查询当前角色拥有的所有的权限或菜单ID
     * @param role_id
     * @return
     */
    List<Integer> queryRolePermissionIdsByRid(Integer role_id) throws Exception ;

    /**
     *  通过id的list集合查询
     * @param menu_ids
     * @return
     * @throws Exception
     */
    List<PageData> loadAllPermissionByMenuIDS(List<Integer> menu_ids) throws Exception ;

    void saveRolePermission(Integer rid, Integer[] ids) throws Exception ;
}
